home *** CD-ROM | disk | FTP | other *** search
-
-
-
- FFFFiiiilllleeee::::::::FFFFiiiinnnndddd((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) FFFFiiiilllleeee::::::::FFFFiiiinnnndddd((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- find - traverse a file tree
-
- finddepth - traverse a directory structure depth-first
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- use File::Find;
- find(\&wanted, '/foo','/bar');
- sub wanted { ... }
-
- use File::Find;
- finddepth(\&wanted, '/foo','/bar');
- sub wanted { ... }
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- The first argument to _f_i_n_d() is either a hash reference
- describing the operations to be performed for each file, or
- a code reference. If it is a hash reference, then the value
- for the key wanted should be a code reference. This code
- reference is called _t_h_e _w_a_n_t_e_d() _f_u_n_c_t_i_o_n below.
-
- Currently the only other supported key for the above hash is
- bydepth, in presense of which the walk over directories is
- performed depth-first. Entry point _f_i_n_d_d_e_p_t_h() is a
- shortcut for specifying { bydepth = 1}> in the first
- argument of _f_i_n_d().
-
- The _w_a_n_t_e_d() function does whatever verifications you want.
- $File::Find::dir contains the current directory name, and $_
- the current filename within that directory.
- $File::Find::name contains "$File::Find::dir/$_". You are
- _c_h_d_i_r()'d to $File::Find::dir when the function is called.
- The function may set $File::Find::prune to prune the tree.
-
- File::Find assumes that you don't alter the $_ variable. If
- you do then make sure you return it to its original value
- before exiting your function.
-
- This library is useful for the find2perl tool, which when
- fed,
-
- find2perl / -name .nfs\* -mtime +7 \
- -exec rm -f {} \; -o -fstype nfs -prune
-
- produces something like:
-
-
-
-
-
-
-
-
-
- Page 1 (printed 10/23/98)
-
-
-
-
-
-
- FFFFiiiilllleeee::::::::FFFFiiiinnnndddd((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) FFFFiiiilllleeee::::::::FFFFiiiinnnndddd((((3333))))
-
-
-
- sub wanted {
- /^\.nfs.*$/ &&
- (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
- int(-M _) > 7 &&
- unlink($_)
- ||
- ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) &&
- $dev < 0 &&
- ($File::Find::prune = 1);
- }
-
- Set the variable $File::Find::dont_use_nlink if you're using
- AFS, since AFS cheats.
-
- finddepth is just like find, except that it does a depth-
- first search.
-
- Here's another interesting wanted function. It will find
- all symlinks that don't resolve:
-
- sub wanted {
- -l && !-e && print "bogus link: $File::Find::name\n";
- }
-
-
- BBBBUUUUGGGGSSSS
- There is no way to make find or finddepth follow symlinks.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 2 (printed 10/23/98)
-
-
-
-